Don't de-dup added sources
authorAlex Crichton <alex@alexcrichton.com>
Wed, 22 Oct 2014 22:33:08 +0000 (15:33 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Mon, 27 Oct 2014 19:40:23 +0000 (12:40 -0700)
We have a hash map on the side and a method that already aborts re-adding a
source if it was already added.

src/cargo/core/registry.rs
src/cargo/ops/cargo_fetch.rs
src/cargo/ops/cargo_generate_lockfile.rs

index 007cf4b76253fcd53fd359f2926f913461268766..171b73d83f52453d5350a43683aa64aa6f4d679f 100644 (file)
@@ -70,8 +70,8 @@ impl<'a> PackageRegistry<'a> {
         Ok(())
     }
 
-    pub fn add_sources(&mut self, ids: Vec<SourceId>) -> CargoResult<()> {
-        for id in dedup(ids).iter() {
+    pub fn add_sources(&mut self, ids: &[SourceId]) -> CargoResult<()> {
+        for id in ids.iter() {
             try!(self.load(id, false));
         }
         Ok(())
@@ -119,17 +119,6 @@ impl<'a> PackageRegistry<'a> {
     }
 }
 
-fn dedup(ids: Vec<SourceId>) -> Vec<SourceId> {
-    let mut seen = vec!();
-
-    for id in ids.into_iter() {
-        if seen.contains(&id) { continue; }
-        seen.push(id);
-    }
-
-    seen
-}
-
 impl<'a> Registry for PackageRegistry<'a> {
     fn query(&mut self, dep: &Dependency) -> CargoResult<Vec<Summary>> {
         let overrides = try!(self.query_overrides(dep));
index 054ef42893ceda185a9577648c7e0b242c9cf89a..e4581f627b9060a38689d392a48bf36d547eb830 100644 (file)
@@ -35,7 +35,7 @@ pub fn resolve_and_fetch(registry: &mut PackageRegistry, package: &Package)
         Some(ref r) => r.iter().map(|p| p.get_source_id().clone()).collect(),
         None => vec![package.get_package_id().get_source_id().clone()],
     };
-    try!(registry.add_sources(sources));
+    try!(registry.add_sources(sources.as_slice()));
 
     let mut resolved = try!(resolver::resolve(package.get_summary(),
                                               resolver::ResolveEverything,
index 5e11626c44a85bd03c7a75b245ae267baa12359e..24baf734923e9674b4c2f550eb85a6004433ed91 100644 (file)
@@ -83,7 +83,7 @@ pub fn update_lockfile(manifest_path: &Path,
         }
         None => {}
     }
-    try!(registry.add_sources(sources));
+    try!(registry.add_sources(sources.as_slice()));
 
     let mut resolve = try!(resolver::resolve(package.get_summary(),
                                              resolver::ResolveEverything,